package modules.listAll;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 集合类不安全
 *      ArrayList 在并发情况下是不安全的！
 *      会出现java.util.ConcurrentModificationException 并发修改异常！
 *      解决方案：
 *          1、切换成Vector就是线程安全的啦！
 *          2、使用Collections.synchronizedList(new ArrayList<>());
 *          3、使用 List arrayList = new CopyOnWriteArrayList<>();
 * @author shengren.yan
 * @create 2021-03-09
 */
public class List1 {

    public static void main(String[] args) {

        List<String> list = Arrays.asList("aa", "bb", "cc");
        // 并发下的 list
        List<Object> arrayList = new ArrayList<>();
//        for(int i=1;i<=30;i++){
//            new Thread(()->{
//                arrayList.add(UUID.randomUUID().toString().substring(0,5));
//                System.out.println(arrayList);
//            },String.valueOf(i)).start();
//        }

        // 解决List并发问题
        List<Object> list2 = new CopyOnWriteArrayList<>();
        for(int i=1;i<=30;i++){
            new Thread(()->{
                list2.add(UUID.randomUUID().toString().substring(0,5));
                System.out.println(list2);
            },String.valueOf(i)).start();
        }

    }


}
